package com.neusoft.elmboot.service;

import com.neusoft.elmboot.po.User;

public interface PointsService {
	
	/**
	 * 根据支付金额计算并添加积分和经验值
	 * @param userId 用户ID
	 * @param amount 支付金额
	 * @return 获得的积分数量
	 */
	int addPointsFromPayment(String userId, Double amount);
	
	/**
	 * 根据经验值计算用户等级和折扣
	 * @param experiencePoints 经验值
	 * @return 等级
	 */
	int calculateLevel(Integer experiencePoints);
	
	/**
	 * 根据等级获取折扣
	 * @param level 等级
	 * @return 折扣（百分比，如99表示99折）
	 */
	int getDiscountByLevel(int level);
	
	/**
	 * 更新用户的等级和折扣
	 * @param userId 用户ID
	 */
	void updateUserLevelAndDiscount(String userId);
	
	/**
	 * 使用积分兑换商品
	 * @param userId 用户ID
	 * @param points 使用的积分
	 * @return 是否成功
	 */
	boolean redeemPoints(String userId, int points);
	
	/**
	 * 评论获得积分（不增加经验值）
	 * @param userId 用户ID
	 * @param points 积分数量
	 */
	void addPointsFromComment(String userId, int points);
	
	/**
	 * 获取用户积分信息
	 * @param userId 用户ID
	 * @return 用户对象
	 */
	User getUserPointsInfo(String userId);
}

